package com.neuedu.javase.myex;

/***
 * 项目名称:  MyJavaSE 
 * 包：  com.neuedu.javase.myex 
 * date:   2025/10/29   8:55  
 * 描述:  
 *  @author : 张金山
 *  作者博客:   https://blog.fulfill.com.cn
 */
public class MulCath {


    public static void m3(){
        int result = 0;
        int numa = 10;
        int numb = 0 ;

        //调用方法  语句一旦出错 就导致 方法栈 不能继续调用了

        result = numa / numb;


        System.out.println("result = " + result);
    }

    public static void m2(){
        String str = "hello";
        str = null;



        System.out.println(str.length());   //java.lang.NullPointerException



    }


    public static void m1(){
        // try{
        //     // m2();  //java.lang.NullPointerException
        //     m3();  //java.lang.ArithmeticException
        // }catch (NullPointerException e){
        //     System.err.println("解决 空指针的问题");
        // } catch (ArithmeticException e) {
        //     System.err.println("解决 算出异常 ");
        // }


        // try{
        //     // m2();  //java.lang.NullPointerException
        //     m3();  //java.lang.ArithmeticException
        //
        // //     可以写 父类型的异常，包含了 子类型， 子类型的异常不用单独的处理
        // }catch (Exception e){
        //     System.err.println("解决 空指针的问题");
        // }


        // try{
        //     // m2();  //java.lang.NullPointerException
        //     m3();  //java.lang.ArithmeticException
        // }
        // catch (NullPointerException e){
        //     System.err.println("解决 空指针的问题");
        // } catch (ArithmeticException e) {
        //     System.err.println("解决 算出异常 ");
        // }
        // //处理非 NullPointerException  、ArithmeticException
        // //  异常处理的catch块是从上往下 匹配的，一旦匹配到 就进入到catch块，不会继续往下匹配
        // // 如果存在多个异常块，需要将 异常范围大的 放下  范围 从小 ----->到大
        // catch (Exception e) {
        //     System.out.println("e = " + e);
        // }






        try{
            // m2();  //java.lang.NullPointerException
            m3();  //java.lang.ArithmeticException
        }
        //1.7+允许catch 合并  NullPointerException | ArithmeticException e
        catch (NullPointerException | ArithmeticException e){
            System.err.println("解决算数异常 和 空指针的问题");
        }
        //处理非 NullPointerException  、ArithmeticException
        //  异常处理的catch块是从上往下 匹配的，一旦匹配到 就进入到catch块，不会继续往下匹配
        // 如果存在多个异常块，需要将 异常范围大的 放下  范围 从小 ----->到大
        catch (Exception e) {
            System.out.println("e = " + e);
        }

    }

    public static void main(String[] args) {


        m1();


        System.out.println("程序执行完成...");




    }
}
